package org.itcast.danamicdatasource.controller;


import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import org.itcast.danamicdatasource.pojo.Friend;
import org.itcast.danamicdatasource.service.FriendService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/friend")
public class FriendController {

    @Autowired
    private FriendService friendService;

    //  主库查询
    @PostMapping("/find")
    public List<Friend> getListDatas() {
        return friendService.findListDatas();
    }

    /**
     * 注意：@DS("dsName") dsName可以为组名也可以为具体某个库的名称
     * 没有@DS  默认数据源
     * 3.使用 @DS 切换数据源。
     * @DS 可以注解在方法上或类上，同时存在就近原则 方法上注解 优先于 类上注解
     * @return
     */
    //   操作从库
    @DS("slave_1")
    @PostMapping("/find1")
    public List<Friend> getListDatas1() {
        return friendService.findListDatas();
    }

    // 主从库同时操作
    @PostMapping("/find2")
    @DSTransactional
    public List<Friend> getListDatas2() {
//        操作主库数据
        List<Friend> masters = friendService.findMastDatas();
//        操作从库数据
        List<Friend> salves = friendService.findSlaveDatas();

        masters.addAll(salves);

        System.out.println(masters);
        return masters;
    }
}
